﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using Keepo.Models;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.ComponentModel.DataAnnotations;
using System.Linq;

namespace Keepo.Models
{
    public class AlbumContext : DbContext
    {
        public DbSet<ProductSize> ProductSizes { get; set; }
        public DbSet<ProductColor> ProductColors { get; set; }

        public DbSet<ImageCategory> ImageCategories { get; set; }
        public DbSet<DesignImage> DesignImages { get; set; }

        public DbSet<VectorCategory> VectorCategories { get; set; }
        public DbSet<DesignVector> DesignVectors { get; set; }

        public DbSet<ProductPage> ProductPages { get; set; }
        public DbSet<Product> Products { get; set; }
        public DbSet<SubProduct> SubProducts { get; set; }
        public DbSet<ViewProduct> ViewProducts { get; set; }

        public DbSet<TemplatePage> TemplatePages { get; set; }
        public DbSet<DesignTemplate> DesignTemplates { get; set; }

        public DbSet<PrinterPage> PrinterPages { get; set; }
        public DbSet<DesignPage> DesignPages { get; set; }
        public DbSet<DesignableProduct> DesignableProducts { get; set; }
        public DbSet<DesignedProduct> DesignedProducts { get; set; }

        public DbSet<PagesPair> PagesPairs { get; set; }

        public DbSet<UserPermission> UserPermissions { get; set; }
        public DbSet<User> Users { get; set; }
        public DbSet<UserInfo> UserInfos { get; set; }
        public DbSet<RegistrationCode> RegistrationCodes { get; set; }

        public DbSet<Album> Albums { get; set; }
        public DbSet<AlbumSection> AlbumSections { get; set; }
        public DbSet<AlbumPage> AlbumPages { get; set; }
        public DbSet<CoverType> CoverTypes { get; set; }

        public DbSet<AlbumStatus> AlbumStatuses { get; set; }
        public DbSet<AlbumSectionStatus> AlbumSectionStatuses { get; set; }
        public DbSet<AlbumLockStatus> AlbumLockStatuses { get; set; }
        public DbSet<AlbumSectionLockStatus> AlbumSectionLockStatuses { get; set; }

        public DbSet<AlbumSectionType> AlbumSectionTypes { get; set; }

        public DbSet<BackgroundImage> BackgroundImages { get; set; }
        public DbSet<AlbumImage> AlbumImages { get; set; }
        public DbSet<ApprovalCheck> ApprovalChecks { get; set; }
        public DbSet<LayoutCategory> LayoutCategories { get; set; }
        public DbSet<PageLayout> PageLayouts { get; set; }

        public DbSet<ImagePagePair> ImagePagePairs { get; set; }
        public DbSet<DesignMask> DesignMasks { get; set; }

        public DbSet<PremadePageCategory> PremadePageCategories { get; set; }
        public DbSet<PremadePage> PremadePages { get; set; }

        public DbSet<Tip> Tips { get; set; }

        public DbSet<Paper> Papers { get; set; }
        public DbSet<AlbumSize> AlbumSizes { get; set; }

        public DbSet<AlbumPrintVersion> AlbumPrintVersions { get; set; }
        public DbSet<AlbumPrintVersionStatus> AlbumPrintVersionStatuses { get; set; }

        public DbSet<RenderTask> RenderTasks { get; set; }
        public DbSet<RenderVariable> RenderVariables { get; set; }
        public DbSet<SystemSetting> SystemSettings { get; set; }

        public DbSet<ContactMail> ContactMails { get; set; }
        public DbSet<ContactMailType> ContactMailTypes { get; set; }
        public DbSet<PageNote> PageNotes { get; set; }

        public DbSet<DesignFont> DesignFonts { get; set; }

        public DbSet<PageMeta> PageMetas { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        }
    }
}